<?php
// 应用公共文件
// if (!function_exists('curl_request')) {
//     function curl_request($url, $method = 'GET', $data = [], $headers = [], $uploadFile = false)
//     {
//         if (strtoupper($method) === 'GET') {
//             if (!empty($data)) {
//                 $url .= '?' . http_build_query($data);
//             }
//         }
//         // 初始化 cURL 会话
//         $ch = curl_init($url);
//         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应内容而不是打印

//         $headers[] = 'Content-Type: application/json';
//         // 根据请求类型设置 cURL 选项
//         switch (strtoupper($method)) {
//             case 'POST':
//                 // 将数据编码为 JSON 字符串（如果需要）
//                 if (is_array($data)) {
//                     $data = json_encode($data);
                   
//                 }
//                 curl_setopt($ch, CURLOPT_POST, true);
//                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//                 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//                 break;
//             case 'GET':
//                 curl_setopt($ch, CURLOPT_HTTPGET, true);
//                 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//                 // var_dump($url);
//                 break;
//             case 'UPLOAD':
//                 // 假设 $data 是文件路径数组
//                 foreach ($data as $key => $file) {
//                     if (is_array($file)) {
//                         curl_setopt(
//                             $ch,
//                             CURLOPT_POSTFIELDS,
//                             array_merge(
//                                 ['upload' => new CURLFile($file['path'], $file['type'], $file['name'])],
//                                 array_map(function ($val) {
//                                     return ['name' => $val];
//                                 }, $file['fields'])
//                             )
//                         );
//                     } else {
//                         curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => new CURLFile($file)]);
//                     }
//                 }
//                 break;
//             case 'DOWNLOAD':
//                 $fp = fopen($data, 'wb');
//                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
//                 curl_setopt($ch, CURLOPT_HEADER, 0);
//                 curl_setopt($ch, CURLOPT_FILE, $fp);
//                 break;
//         }

//         // 设置自定义头部
//         if (!empty($headers)) {
//             curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//         }

//         // 执行 cURL 请求
//         $response = curl_exec($ch);


//         // 检查是否有错误发生
//         if (curl_errno($ch)) {
//             throw new Exception('cURL Error: ' . curl_error($ch));
//         }

//         // 关闭 cURL 会话
//         curl_close($ch);

//         // 对于下载操作，返回文件路径
//         if (strtoupper($method) === 'DOWNLOAD') {
//             return $data;
//         }

//         // 返回响应内容
//         return $response;
//     }


// }


if (!function_exists('needs_update')) {
    // 比较两个版本号，判断是否需要更新
    function needs_update($currentVersion, $latestVersion)
    {
        // 使用explode函数将版本号分割成数组，以点号为分隔符
        $currentParts = explode('.', $currentVersion);
        $latestParts = explode('.', $latestVersion);

        // 确保两个版本号的每个部分都有相同的长度，较短的数组后面补0
        $maxLength = max(count($currentParts), count($latestParts));
        $currentParts = array_pad($currentParts, $maxLength, 0);
        $latestParts = array_pad($latestParts, $maxLength, 0);

        // 逐个比较版本号的每个部分
        for ($i = 0; $i < $maxLength; $i++) {
            // 将版本号部分转换为整数进行比较
            $currentPart = intval($currentParts[$i]);
            $latestPart = intval($latestParts[$i]);

            // 如果最新版本的部分大于当前版本的部分，则需要更新
            if ($latestPart > $currentPart) {
                return true;
            }
            // 如果最新版本的部分小于当前版本的部分，说明当前版本更新，不需要更新
            elseif ($latestPart < $currentPart) {
                return false;
            }
        }

        // 如果所有部分都相等或当前版本大于等于最新版本，则不需要更新
        return false;
    }
}


// 临时方法不太高效
if (!function_exists('plugin_config')) {
    // 获取插件配置
    function plugin_config($key = '')
    {
       
        foreach (app()->plugin->getPlug() as $name => $plugin) {
   
            $file = app('plugin')->getBasePath().$name.DIRECTORY_SEPARATOR.'config.php';
   
            if(file_exists($file)){
                \think\facade\Config::load($file, 'plugin_config'.$name);
            }
           
            
        }
        if(empty($key)){
            return \think\facade\Config::get('plugin_config');
        }
        $config = \think\facade\Config::get('plugin_config'.$key);
        return $config;
        
    }
}


